﻿using System;
using System.Collections.Generic;
using System.Text;
using Entidad;
using System.Data;
using Persistencias;

namespace Persistencia
{
    public class PerMonto : IPersistencia
    {
        public PerMonto() { }

        public void Insertar(IEntidad entidad)
        {
            throw new NotImplementedException();
        }
        public void Eliminar(int Id)
        {
            throw new NotImplementedException();
        }
        public void Modificar(IEntidad entidad)
        {
            AccesoaDatos d = new AccesoaDatos();
            try
            {
                EntMonto Monto = (EntMonto)entidad;

                d.CrearParametro("@IdMonto", Monto.IdMonto, SqlDbType.NVarChar);
                d.CrearParametro("@MontoMensual", Monto.MontoMensual, SqlDbType.Money);
                d.CrearParametro("@MontoRecargo", Monto.MontoRecargo, SqlDbType.Money);
                d.CrearParametro("@PagoOportuno", Monto.PagoOportuno, SqlDbType.Money);

                d.EjecutaSentencia("sp_ModificarMonto");

            }
            catch (Exception ex)
            {
                System.ApplicationException excepcion = new System.ApplicationException(ex.Message, ex);
                throw excepcion;
            }
        }



        public IEntidad Obtener(String NombreLogin)
        {
            throw new NotImplementedException();
        }
        public List<IEntidad> ObtenerTodos()
        {
            try
            {

                AccesoaDatos d = new AccesoaDatos();
                List<IEntidad> DatosMonto = new List<IEntidad>();
                DataTable _tabla = d.EjecutaSelect("sp_ObtenerTodosMonto");
                foreach (DataRow _row in _tabla.Rows)
                {
                    EntMonto Monto = new EntMonto();

                    Monto.IdMonto = Convert.ToInt32(_row["IdMonto"]);
                    Monto.MontoMensual = Convert.ToDecimal(_row["MontoMensual"]);
                    Monto.MontoRecargo = Convert.ToDecimal(_row["MontoRecargo"]);
                    DatosMonto.Add(Monto);
                }
                return DatosMonto;
            }
            catch (Exception ex)
            {
                System.ApplicationException excepcion = new System.ApplicationException(ex.Message, ex);
                throw excepcion;
            }
        }

      
        public void ModificarMontos(int natacion,int Mensualidad, int Recargo, int Inscripcion,int PagoOportuno)
        {
            AccesoaDatos d = new AccesoaDatos();
            try
            {
                d.CrearParametro("@natacion", natacion, SqlDbType.Money);
                d.CrearParametro("@Inscripcion", Inscripcion, SqlDbType.Money);
                d.CrearParametro("@MontoMensual", Mensualidad, SqlDbType.Money);
                d.CrearParametro("@MontoRecargo", Recargo, SqlDbType.Money);
                d.CrearParametro("@PagoOportuno", PagoOportuno, SqlDbType.Money);
                d.EjecutaSentencia("ModificarMonto");

            }
            catch (Exception ex)
            {
                System.ApplicationException excepcion = new System.ApplicationException(ex.Message, ex);
                throw excepcion;
            }
        }

        public EntMonto ObtenerMonto()
        {
            try
            {

                AccesoaDatos d = new AccesoaDatos();
                EntMonto Monto = new EntMonto();
                DataTable _tabla = d.EjecutaSelect("ObtenerMontoPorId");
                foreach (DataRow _row in _tabla.Rows)
                {
                    Monto.Inscripcion = Convert.ToDecimal(_row["Inscripcion"]);
                    Monto.MontoMensual = Convert.ToDecimal(_row["MontoMensual"]);
                    Monto.MontoRecargo = Convert.ToDecimal(_row["MontoRecargo"]);
                    Monto.PagoOportuno = Convert.ToDecimal(_row["PagoOportuno"]);
                    Monto.Pagonatacion = Convert.ToDecimal(_row["Pagonatacion"]);

                    Monto.Mes = _row["Mes"].ToString();
                    Monto.año = _row["año"].ToString();
                }
                return Monto;
            }
            catch (Exception ex)
            {
                System.ApplicationException excepcion = new System.ApplicationException(ex.Message, ex);
                throw excepcion;
            }
        }

        public void Modificatiempo()
        {
            AccesoaDatos d = new AccesoaDatos();
            try
            {


                d.CrearParametro("@Mes", DateTime.Now.Month.ToString(), SqlDbType.VarChar);
                d.CrearParametro("@año", DateTime.Now.Year.ToString(), SqlDbType.VarChar);

                d.EjecutaSentencia("ModificarTiempo");

            }
            catch (Exception ex)
            {
                System.ApplicationException excepcion = new System.ApplicationException(ex.Message, ex);
                throw excepcion;
            }
        }

      
    }
}
